package UI;
/*
 * 这里展示群聊列表
 * 群聊从数据库调用
 * 按钮数量根据群聊数量决定
 * 点击群聊的用户名进入聊天界面
 * */

import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.IOException;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
public class GroupListUI extends JFrame implements MouseListener {
    // 群聊集合，用于存储群聊的名称
    private List<String> groupList = new ArrayList<>();

    // 按钮集合，用于存储群聊按钮
    private List<JButton> ButtonList = new ArrayList<>();
    //聊天室
    // 根据群聊用户名生成按钮文本
    //下面的按钮是测试用的
    //命名规则如下,字符串结尾为群聊 群 组 团 班
    /**
     * (梦归)添加一些群聊对象并在下面添加位置大小信息
     */
    //JButton group0 = new JButton("这是一个群聊");

    //返回主界面按钮
    JButton returnHome = new JButton("返回主页");
    //添加群聊按钮


    public GroupListUI() {
        WholeUI wholeUI = new WholeUI(this) {
            @Override
            protected void elseWindow(JFrame jFrame) {
                jFrame.setSize(500, 500);
                jFrame.setTitle("群聊列表");
            }
        };
        // 从数据库或本地文件加载群聊列表
        loadGroups();
        // 加载界面组件
        loadUI();
    }
    // 从数据库或本地文件读取群聊列表
    private void loadGroups() {
        // 这里假设从数据库加载群聊名称，可以替换为实际的数据库调用逻辑
        // 示例：groupList.add("开发者交流群");
        groupList.add("开发者交流群");
        groupList.add("设计师团");
        groupList.add("原神交流群");
        groupList.add("项目管理班");
        groupList.add("坤坤太美群");
        groupList.add("不想上班");


        // 根据群聊列表生成按钮
        for (String groupName : groupList) {
            JButton button = new JButton(groupName);
            ButtonList.add(button);
        }
    }

    private void loadUI() {
        //根据群聊名字在本地
        // 根据群聊数量生成按钮，并按照合适的布局摆放按钮
        int size = ButtonList.size();
        int rows = (int) Math.ceil(Math.sqrt(size)); // 行数
        int cols = (int) Math.ceil((double) size / rows); // 列数

        int buttonWidth = 120;
        int buttonHeight = 50;
        int padding = 20; // 按钮间的间距

        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                int index = i * cols + j;
                if (index < size) {
                    JButton groupButton = ButtonList.get(index);
                    int x = j * (buttonWidth + padding);
                    int y = i * (buttonHeight + padding);
                    groupButton.setBounds(x, y, buttonWidth, buttonHeight);
                    this.getContentPane().add(groupButton);
                    groupButton.addMouseListener(this);
                }
            }
        }

        // 返回主页按钮
        returnHome.setBounds(0, 100 + size * (buttonHeight + padding), 100, 50);
        this.getContentPane().add(returnHome);
        returnHome.addMouseListener(this);
    }


    //鼠标点击事件
    @Override
    public void mouseClicked(MouseEvent e) {
        //点击群聊按钮进入聊天界面
        // (只要不是返回主界面按钮被点击了,就进入聊天界面)
        //这里逻辑已经写完了不用再写
        JButton clickedButton = (JButton) e.getSource();
        if (clickedButton!=returnHome){
            ChatUI chatUI = null;
            try {
                chatUI = new ChatUI(clickedButton.getText());
            } catch (SocketException ex) {
                throw new RuntimeException(ex);
            } catch (UnknownHostException ex) {
                throw new RuntimeException(ex);
            } catch (IOException ex) {
                throw new RuntimeException(ex);
            }
            this.dispose();

            //返回主界面
        } else if (clickedButton==returnHome) {
            HomeUI homeUI = new HomeUI();
            this.dispose();


        }

    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }
}
